package com.lmk.ms.common.obs.service;

import com.lmk.ms.common.utils.IdUtils;
import com.lmk.ms.common.vo.obs.OssFileVO;
import jakarta.servlet.http.HttpServletResponse;
import org.springframework.web.multipart.MultipartFile;

import java.io.InputStream;

/**
 * MinIo 服务
 * @author laomake@hotmail.com
 * @version 1.0
 * @date 2022-07-05
 */
public interface ObsFileService {

    /**
     * 上传 MultipartFile
     * @param multipartFile
     * @return
     */
    OssFileVO upload(MultipartFile multipartFile);

    /**
     * 上传文件
     * @param fileName
     * @param is
     * @return
     */
    OssFileVO upload(String fileName, InputStream is);

    /**
     * 删除文件
     * @param name
     */
    void remove(String name);

    /**
     * 下载文件
     * @param name
     * @param response
     */
    void download(String name, HttpServletResponse response);

    /**
     * 获取文件完整URL
     * @param name
     * @return
     */
    String getUrl(String name);

    /**
     * 获取临时地址
     * @param name
     * @param expiry
     * @return
     */
    String getTemporaryUrl(String name, int expiry);

    /**
     * 使用uuid加密的文件名称
     * @param name
     * @return
     */
    default String generateFileName(String name) {
        return IdUtils.uuid() + name.substring(name.lastIndexOf("."));
    }
}
